package Views.Categoria;

import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;




import Fisica.DAOCategoria;
import Inteface.InterfaceGrilla;
import Inteface.InterfacePanel;
import Modelo.TarjetaCategoria;
import Views.Main.MainTarjeta;

import javax.swing.JComboBox;

import java.awt.Image;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;

import javax.swing.JButton;
import javax.swing.filechooser.FileNameExtensionFilter;

public class CategoriaCampos extends JPanel implements InterfaceGrilla, InterfacePanel {
	private JTextField tfID;
	private JComboBox cbCategoria;
	private JTextField tfCategoria;
	


	/**
	 * Create the panel.
	 */
	public CategoriaCampos(int id) {
		setLayout(null);
		this.setVisible(true);
		JLabel lblId = new JLabel("ID");
		lblId.setBounds(10, 11, 46, 14);
		add(lblId);
		
		tfID = new JTextField();
		tfID.setEditable(false);
		tfID.setBounds(76, 8, 53, 20);
		add(tfID);
		tfID.setColumns(10);
		
		JLabel lblCategoria = new JLabel("Categor\u00EDa");
		lblCategoria.setBounds(10, 42, 89, 14);
		add(lblCategoria);
		
		cbCategoria = new JComboBox();
		cbCategoria.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
			}
		});
		cbCategoria.setBounds(76, 36, 86, 20);
		add(cbCategoria);
		this.initCategorias();
		
		tfCategoria = new JTextField();
		tfCategoria.setEnabled(false);
		tfCategoria.setEditable(false);
		tfCategoria.setBounds(172, 36, 86, 20);
		add(tfCategoria);
		tfCategoria.setColumns(10);
				
		this.init(id);

	}

	@Override
	public void guardar() {
		try {
			DAOCategoria tc = new DAOCategoria();
			int id = -1;
			if(tfID.getText().length() > 0)
			 id = Integer.parseInt(tfID.getText());
			
			TarjetaCategoria t = (TarjetaCategoria) tc.get(Integer.valueOf(id));		
			
//			"ID", "Categoria"
			
			if (cbCategoria.getSelectedIndex() > 0)
				t.setcategoria(cbCategoria.getSelectedItem().toString());
			else 
				if(tfCategoria.getText().length()>0)
					t.setcategoria(tfCategoria.getText());
						
			if(id == -1)
				tc.insert(t);
			else tc.update(t);
			
			this.cancelar();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}

	@Override
	public void cancelar() {
		tfID.setText("");
		cbCategoria.setSelectedIndex(0);
		tfCategoria.setText("");		
	}

	public Object primero() {
		DAOCategoria dc = new DAOCategoria();
		return (TarjetaCategoria) dc.getFirst();		
	}

	public Object ultimo() {
		DAOCategoria dt = new DAOCategoria();
		return (TarjetaCategoria) dt.getLast();
	}

	public Object anterior() {
		DAOCategoria dt = new DAOCategoria();
		if (tfID.getText().length()>0)
			 return (TarjetaCategoria) dt.getPre(Integer.parseInt(tfID.getText()));
		else return primero();
	}

	public Object posterior() {
		DAOCategoria dt = new DAOCategoria();
		if (tfID.getText().length()>0)
			return (TarjetaCategoria) dt.getPost(Integer.parseInt(tfID.getText()));
		else return primero();
	}

	@Override
	public int setprimero() {
		DAOCategoria dt = new DAOCategoria();
		MainTarjeta.idCategoria = ((TarjetaCategoria) dt
				.getFirst()).getId();
		return -1;
		
	}

	@Override
	public int setultimo() {
		DAOCategoria dt = new DAOCategoria();
		MainTarjeta.idCategoria = ((TarjetaCategoria) dt
				.getLast()).getId();
		return -1;
		
	}

	@Override
	public int setanterior() {
		DAOCategoria dt = new DAOCategoria();
		MainTarjeta.idCategoria = ((TarjetaCategoria) dt
				.getPre(Integer.parseInt(tfID.getText()))).getId();
		return -1;
		
	}

	@Override
	public int setposterior() {
		DAOCategoria dt = new DAOCategoria();
		MainTarjeta.idCategoria = ((TarjetaCategoria) dt
				.getPost(Integer.parseInt(tfID.getText()))).getId();
		return -1;
	}
	
	@Override
	public boolean grilla() {
		return false;
	}

	@Override
	public boolean campos() {
		return true;
	}

	@Override
	public int getPanel() {
		return 0;
	}

	@Override
	public void init(int id) {	
		try {
			this.finNuevo();
			if(id > 0){
				DAOCategoria th = new DAOCategoria();
				TarjetaCategoria t = (TarjetaCategoria) th.get(id);		
				tfID.setText(Integer.toString(t.getId()));
				cbCategoria.setSelectedItem(t.getcategoria());
				initCategorias();
				cbCategoria.setSelectedItem(t.getcategoria());				
				
				tfCategoria.setText(t.getcategoria());
			}else{
				cancelar();
			}
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	@Override
	public int getRowSelected() {
		return -1;
	}
	
	//CARGA LISTA DE MARCAS 
    public void initCategorias(){
        cbCategoria.removeAllItems();
        List<Object>list = null;
        DAOCategoria dt = new DAOCategoria();
        TarjetaCategoria t;
        list = dt.getList();
        cbCategoria.addItem("");  
        for(Object o: list) {
        	t = (TarjetaCategoria) o;
            cbCategoria.addItem(t.getcategoria()); 
           } 
        }
    


	@Override
	public void nuevo() {
//		boolean nuevo = !tfModelo.isEnabled();
//		tfModelo.setEnabled(nuevo);
//		tfModelo.setEditable(nuevo);
		cbCategoria.setSelectedIndex(0);
		tfCategoria.setText("");		
	}
	
	public void finNuevo() {
		tfCategoria.setEnabled(false);
		tfCategoria.setEditable(false);		
	}
}
